package com.billdowney.qq.robot.util;
 
import java.text.DateFormat;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.Date;
import java.util.List;
 
public class DateUtil {
	/**
	 * 获取两个日期之间的所有日期
	 *
	 * @param startTime 开始日期
	 * @param endTime   结束日期
	 * @return
	 */
	public static List<String> getDayBetween(String startTime, String endTime) {

		// 返回的日期集合
		List<String> days = new ArrayList<String>();

		DateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd");
		try {
			Date start = dateFormat.parse(startTime);
			Date end = dateFormat.parse(endTime);

			Calendar tempStart = Calendar.getInstance();
			tempStart.setTime(start);

			Calendar tempEnd = Calendar.getInstance();
			tempEnd.setTime(end);
			tempEnd.add(Calendar.DATE, +1);// 日期加1(包含结束)
			while (tempStart.before(tempEnd)) {
				days.add(dateFormat.format(tempStart.getTime()));
				tempStart.add(Calendar.DAY_OF_YEAR, 1);
			}

		} catch (ParseException e) {
			e.printStackTrace();
		}

		return days;
	}

	/**
	 * 获取两个月份之间的所有月份(含跨年)
	 *
	 * @param minDate
	 * @param maxDate
	 * @return
	 * @throws ParseException
	 */

	/**
	 * 获取两个日期之间的所有月(字符串格式, 按月计算)
	 *
	 * @param start
	 * @param end
	 * @return
	 */
	public static List<String> getBetweenMonths(Date start, Date end) {
		List<String> result = new ArrayList<String>();
		SimpleDateFormat sdf = new SimpleDateFormat("MM");

		Calendar tempStart = Calendar.getInstance();
		tempStart.setTime(start);
		// 加了一个月
		tempStart.add(Calendar.MONTH, 1);
		Calendar tempEnd = Calendar.getInstance();
		tempEnd.setTime(end);
		result.add(sdf.format(start));
		while (tempStart.before(tempEnd)) {
			result.add(sdf.format(tempStart.getTime()));
			tempStart.add(Calendar.MONTH, 1);
		}
		return result;

	}

	public static void main(String[] args) throws ParseException {

		SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd");//注意月份是MM
		Date date = simpleDateFormat.parse("2021-07-02");
		SimpleDateFormat simpleDateFormat1 = new SimpleDateFormat("yyyy-MM-dd");//注意月份是MM
		Date date1 = simpleDateFormat1.parse("2021-09-31");
		List<String> monthBetween = getBetweenMonths(date,date1);
		for (String month : monthBetween) {
			System.out.println(month);
		}
	}
}